using System;
using System.Linq;

namespace ReactiveCode.Linq
{
    partial class ObservableEnumerable
    {
        #region Aggregate

        internal static IObservableEnumerable<T> Aggregate<T>(this IObservableEnumerable<T> source,
            Func<IObservable<T>, IObservable<T>, IObservable<T>> add,
            Func<IObservable<T>, IObservable<T>, IObservable<T>> remove)
        {
            throw new NotImplementedException();
        }
        internal static IObservableEnumerable<TResult> Aggregate<TSource, TAccumulate, TResult>(this IObservableEnumerable<TSource> source,
            IObservable<TAccumulate> seed,
            Func<IObservable<TAccumulate>, IObservable<TAccumulate>, IObservable<TAccumulate>> add,
            Func<IObservable<TAccumulate>, IObservable<TAccumulate>, IObservable<TAccumulate>> remove,
            Func<IObservable<TAccumulate>, IObservable<TResult>> resultSelector)
        {
            throw new NotImplementedException();
        }

        #endregion

        internal static IObservable<int> Sum<T>(this IObservableEnumerable<int> source)
        {
            throw new NotImplementedException();
        }
        internal static IObservableEnumerable<int> Sum<T>(this IObservableEnumerable<T> source, Func<IObservable<T>, IObservable<int>> selector)
        {
            throw new NotImplementedException();
        }

        internal static IObservable<bool> Any<T>(this IObservableEnumerable<T> source, Func<IObservable<T>, IObservable<bool>> predicate)
        {
            throw new NotImplementedException();
        }

        internal static IObservable<int> Count<T>(this IObservableEnumerable<T> source)
        {
            throw new NotImplementedException();
        }

        internal static IObservable<T> FirstOrDefault<T>(this IObservableEnumerable<T> source)
        {
            throw new NotImplementedException();
        }
    }
}